.TH std::experimental::popcount 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::experimental::popcount \- std::experimental::popcount

.SH Synopsis
   Defined in header <experimental/simd>
   template< class T, class Abi >                        (parallelism TS v2)
   int popcount( const simd_mask<T, Abi>& k ) noexcept;

   Returns the number of true values in the mask k.

.SH Parameters

   k - the simd_mask to apply the reduction to

.SH Return value

   An int in the range [0, simd_size_v<T, Abi>).

.SH Example


// Run this code

 #include <cstddef>
 #include <experimental/simd>
 #include <iostream>
 namespace stdx = std::experimental;

 template<typename Abi>
 int count_zeros(stdx::simd<int, Abi> v)
 {
     return stdx::popcount(v == 0); // v == 0 returns a simd_mask
 }

 void println(auto rem, auto const v)
 {
     std::cout << rem << ": ";
     for (std::size_t i = 0; i != v.size(); ++i)
         std::cout << v[i] << ' ';
 }

 int main()
 {
     stdx::simd<int> x{8};
     println("x", x);
     std::cout << "  zeros: " << count_zeros(x) << '\\n';

     x[3] = x[1] = false;
     println("x", x);
     std::cout << "  zeros: " << count_zeros(x) << '\\n';
 }

.SH Possible output:

 x: 8 8 8 8   zeros: 0
 x: 8 0 8 0   zeros: 2
